package com.itany.corejava.code07_常用类.包装类;

/**
 * @author MissChen
 * @date 2024年03月01日 11:05
 */
public class Test01_定义方式 {
    public static void main(String[] args) {
        //定义方式一:通过构造方法定义
        byte b=1;
        Byte b1=new Byte(b);
        Byte b2=new Byte("2");
        System.out.println(b1);
        System.out.println(b2);

        //定义方式二:通过valueOf()方法进行定义
        Byte b3=Byte.valueOf(b);
        Byte b4=Byte.valueOf("1");
        System.out.println(b3);
        System.out.println(b4);


        // 由于传递的字符串的值无法转换成对应类型，所以报异常:NumberFormatException
        // byte b5=new Byte("aaa");

        //当传递的字符串格式没问题，但是值超出范围的时候，此时会抛异常:NumberFormatException
        // Byte b6=new Byte("1000");
        // System.out.println(b6);

        //对于boolean类型。传递的字符串值为true时返回true
        // 传递的字符串值是true以外的任意值时，都会返回false
        Boolean flag=new Boolean("false");
        System.out.println(flag);

        Boolean flag2=new Boolean("true");
        System.out.println(flag2);

        //对于Float类型，构造方法支持float与double
        Float f=new Float(3.14f);
        Float f2=new Float(3.14);
        System.out.println(f);
        System.out.println(f2);
        //虽然Double的构造方法没有float，但是填了float也不会报错
        Double d=new Double(3.14);
        System.out.println(d);

        Character c=new Character('A');
        System.out.println(c);

        Integer i1=Integer.valueOf(100);
        Integer i2=Integer.valueOf("100");
        System.out.println(i1==i2);//true

        // 当i的值在low和high之间，通过源码可以发现：[-128,127]
        // 此时没有创建新的对象，而是从缓存中取出来的
        // 只有超出范围，才会创建新的对象

        Integer i3=Integer.valueOf(1000);
        Integer i4=Integer.valueOf("1000");
        System.out.println(i3==i4);//false

        //包装类具有面向对象的特征，可以调用Object方法
        System.out.println(i3.getClass());
        System.out.println(i3.hashCode());






    }
}
